home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / NRPAS13 / DESKS.DEM < prev    next >
Text File  |  1991-04-29  |  2KB  |  76 lines

  1. PROGRAM d7r14(input,output);
  2. (* driver for routines KS and CYFUN in file DESKS.PAS *)
  3. TYPE
  4.    gl32array = ARRAY [1..32] OF integer;
  5.    gl48array = ARRAY [1..48] OF integer;
  6.    gl56array = ARRAY [1..56] OF integer;
  7.    gl64array = ARRAY [1..64] OF integer;
  8. VAR
  9.    glicd,ipc1 : gl56array;
  10.    i,k : integer;
  11.    iout,ir,ipp : gl32array;
  12.    kn,ipc2,iet : gl48array;
  13.    key,ip,ipm : gl64array;
  14.    is : ARRAY [1..16,1..4,1..8] OF integer;
  15.    ibin : ARRAY [1..4,1..16] OF integer;
  16.    ksflg,desflg,cyflg : boolean;
  17.    txt : PACKED ARRAY [1..64] OF char;
  18.  
  19. (*$I MODFILE.PAS *)
  20. (*$I DESKS.PAS *)
  21.  
  22. BEGIN
  23. (* test routine KS *)
  24.    desflg := true;
  25.    ksflg := true;
  26.    cyflg := true;
  27.    FOR i := 1 to 64 DO BEGIN
  28.       key[i] := i MOD 2;
  29.       IF (key[i] = 0) THEN txt[i] := '-';
  30.       IF (key[i] = 1) THEN txt[i] := '*'
  31.    END;
  32.    writeln('legend:');
  33.    writeln('-=0   *=1 ':25);
  34.    writeln('master key:');
  35.    write(' ':12);
  36.    FOR i := 1 to 56 DO write(txt[i]);
  37.    writeln;
  38.    writeln('sub-master keys:');
  39.    FOR i := 1 to 16 DO BEGIN
  40.       ks(key,i,kn);
  41.       FOR k := 1 to 48 DO BEGIN
  42.          IF (kn[k] = 0) THEN txt[k] := '-';
  43.          IF (kn[k] = 1) THEN txt[k] := '*'
  44.       END;
  45.       write(i:6,' ':6);
  46.       FOR k := 1 to 48 DO write(txt[k]);
  47.       writeln
  48.    END;
  49.    writeln('press RETURN to continue...');
  50.    readln;
  51. (* test routine CYFUN *)
  52.    FOR i := 1 to 32 DO BEGIN
  53.       ir[i] := (i MOD 3) MOD 2;
  54.       IF (ir[i] = 0) THEN txt[i] := '-';
  55.       IF (ir[i] = 1) THEN txt[i] := '*'
  56.    END;
  57.    writeln('legend:');
  58.    writeln('-=0   *=1 ':25);
  59.    writeln('input to cipher function:');
  60.    write(' ':12);
  61.    FOR i := 1 to 32 DO write(txt[i]);
  62.    writeln;
  63.    writeln('ciphered output:');
  64.    FOR i := 1 to 16 DO BEGIN
  65.       ks(key,i,kn);
  66.       cyfun(ir,kn,iout);
  67.       FOR k := 1 to 32 DO BEGIN
  68.          IF (iout[k] = 0) THEN txt[k] := '-';
  69.          IF (iout[k] = 1) THEN txt[k] := '*'
  70.       END;
  71.       write(i:6,' ':6);
  72.       FOR k := 1 to 32 DO write(txt[k]);
  73.       writeln
  74.    END
  75. END.
  76.